package com.sky.mapper;

import com.sky.dto.OrdersPageQueryDTO;
import com.sky.entity.Orders;
import org.apache.ibatis.annotations.Mapper;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @Description OrderMapper
 * @Author zhuzi
 * @Date 2023/10/05
 */
@Mapper
public interface OrderMapper {

    /**
     * 新增订单
     *
     * @param order Orders
     */
    void insertOrder(Orders order);

    /**
     * 根据订单号获取订单信息
     *
     * @param orderNumber String
     * @return Orders
     */
    Orders getOrderByOrderNumber(String orderNumber);

    /**
     * 根据订单id更新订单信息
     *
     * @param order Orders
     */
    void updateByOrderId(Orders order);

    /**
     * 查询历史订单
     *
     * @param ordersPageQueryDTO OrdersPageQueryDTO
     * @return List
     */
    List<Orders> getOrderByOrdersPageQueryDTO(OrdersPageQueryDTO ordersPageQueryDTO);

    /**
     * 根据订单id获取订单信息
     *
     * @param orderId Long
     * @return Orders
     */
    Orders getOrderByOrderId(Long orderId);

    /**
     * 根据状态获取订单数量
     *
     * @param status Integer
     * @return Integer
     */
    Integer getOrderCountByStatus(Integer status);

    /**
     * 获取当前支付状态下小于参照时间的订单
     *
     * @param status Integer 支付状态
     * @param time   LocalDateTime 参照时间
     * @return List
     */
    List<Orders> getOrdersByStatusAndTime(Integer status, LocalDateTime time);

}
